<info>
Double stereo delay
mode off = Source -> Delay2 
mode on  = Delay1 -> Delay2

Jean Piche, 1996
</info>
<tk_interface>
cfilein 	source 

csepar -label "Delay 1"
cgraph 	delay1d -label "Right" -un 	s -rel log -min .00001 -max 10 -init .26 	 -gen 1
cgraph 	delay1g 	-label "Left" -un 	s -rel log -min .00001 -max 10 -init .36 	 -gen 2
cgraph 	fdbk1 	-label "Feedback" -un % -min  0 -max 1 -init .85 	
csepar
csepar -label "Delay 2"
cgraph 	delay2d  -label "Right" -un 	s -rel log -min .00001 -max 10 -init .16 	 -gen 4
cgraph 	delay2g  -label "Left" -un 	s -rel log -min .00001 -max 10 -init .15 	 -gen 5
cgraph fdbk2 -label "Feedback" -un % -min  0 -max 1 -init .85 	
ctoggle loop -label "Loop Input Source"  -init 0
ctoggle dcremo -label "Remove DC on Source"  -init 0
cpopup mode -label Routing -value "Source-->Delay2 Delay1-->Delay2 "

cslider gaininput    -label "Input Gain" -un x -res .01 -min .01 -max 2 -init .5 	 -co lightsalmon2
cslider mixorig      -label "Mix Original" -un x -res .01 -min .01 -max 2 -init 1  -co lightsalmon1
cslider mixdelay1  -label "Mix Delay1" -un x -res .01 -min .01 -max 2 -init 1  	  -co lightsalmon1
cslider mixdelay2   -label "Mix Delay2" -un x -res .01 -min .01 -max 2 -init 1 	  -co lightsalmon1
cslider total_time  -label "Total Duration" -un sec.  -max 1000 -min 1 -init 30
</tk_interface>
<mono>

</mono>
<stereo>
instr 1

aph1	phasor	1/p3
adel1	tablei 	aph1, 1, 1
adel2	tablei 	aph1, 2, 1
adel3	tablei 	aph1, 4, 1
adel4	tablei 	aph1, 5, 1

kiswitch	= 	gkmode 
kigainor	= 	gkmixorig
kigaind1	= 	gkmixdelay1
kigaind2	= 	gkmixdelay2
kigaind1	= 	gkmixdelay1
kigaind2	= 	gkmixdelay2
kigain	= 	gkgaininput  
idcre = i(gkdcremo )
 
iloop = i(gkloop)

ar 	init 	0
ad 	init 	0
ar2 	init 	0
ad2 	init 	0

itype	init	[sinfo source chn]
kfac	=	( itype == 2 ?1:0.5)* [sinfo source sr] / sr
asig, asid 	diskin  	"[source]", kfac, [offsource], iloop
asid 	= 	(itype == 2?asid:asig)

ste:
if idcre = 0 goto nodc 
asig	dcblock	asig
asid	dcblock	asid 


nodc:
adump		delayr	15
ar		deltapi 	adel1+(1/kr)
		delayw	asig+(ar*gkfdbk1)

adum1p		delayr	15
ad		deltapi 	adel2+(1/kr)
		delayw	asid+(ad*gkfdbk1)

if kiswitch = 1 goto del
ardel	=	asig
argel	=	asid
goto outer

del:
ardel	=	ar
argel	=	ad

outer:
adum2p	delayr	15
ar2	deltapi 	adel3+(1/kr)
	delayw	ardel+(ar2*gkfdbk2)

adum3p	delayr	15
ad2	deltapi	 adel4+(1/kr)
	delayw	argel+(ad2*gkfdbk2)


a1	=	((ar*kigaind1)+(asig*kigainor)+(ar2*kigaind2))*kigain
a2	=	((ad*kigaind1)+(asid*kigainor)+(ad2*kigaind2))*kigain

outs	a1, a2 
  
					    endin
</stereo>
<quad>

</quad>
<score>
i1 0 [total_time]
</score>
